import pandas as pd
import re
from tkinter import Tk
from tkinter.filedialog import askopenfilename


# 选择文件
def select_file():
    Tk().withdraw()  # 不显示主窗口
    file_path = askopenfilename(title="选择Excel文件", filetypes=[("Excel files", "*.xlsx;*.xls")])
    return file_path


# 格式化函数
def format_title(title):
    if not isinstance(title, str):  # 检查是否为字符串类型
        title = str(title) if title is not None else ''  # 将非字符串转换为空字符串
    # 替换空格为连字符，去掉非字母和数字字符，并转换为小写
    formatted_title = re.sub(r'[^a-zA-Z0-9\s]', '', title)  # 去掉非字母数字字符
    formatted_title = formatted_title.replace(" ", "-").lower()  # 替换空格为连字符并转小写
    return formatted_title


# 主函数
def process_excel(file_path):
    # 读取Excel文件
    df = pd.read_excel(file_path)

    if 'atl_title' not in df.columns:
        print("错误：Excel文件中没有 'atl_title' 列")
        return

    # 处理 'atl_title' 列并生成 'post_name' 列
    df['post_name'] = df['atl_title'].apply(format_title)

    # 保存回Excel文件
    df.to_excel(file_path, index=False)
    print(f"处理完成，文件已更新：{file_path}")


if __name__ == "__main__":
    # 选择Excel文件
    file_path = select_file()

    if file_path:
        # 处理Excel文件
        process_excel(file_path)
    else:
        print("没有选择文件")
